package com.yntx.usercenter.authorization.service;

import com.yntx.usercenter.authorization.dto.*;
import com.yntx.usercenter.authorization.po.Role;
import com.yntx.usercenter.authorization.vo.RoleVO;

import java.util.List;

public interface RoleService {

    /**
     * 获取某个用户的所有角色
     *
     * @return {@link List}<{@link Role}>
     */
    List<RoleVO> listByUser(Long userId);

    /**
     * 列表
     *
     * @param roleDTO 角色dto
     * @return {@link List}<{@link RoleVO}>
     */
    List<RoleVO> list(RoleDTO roleDTO);

    /**
     * 添加
     *
     * @param dto dto
     * @return {@link Long}
     */
    Long add(RoleDTO dto);

    /**
     * 删除
     *
     * @param dto dto
     * @return boolean
     */
    boolean delete(RoleDeleteDTO dto);

    /**
     * 更新
     *
     * @param dto dto
     * @return boolean
     */
    boolean update(RoleUpdateDTO dto);

    /**
     * 分配角色
     * todo: 改为批量
     *
     * @param dto dto
     * @return boolean
     */
    boolean assignRole(AssignRoleDTO dto);

    /**
     * 联合国分配角色
     *
     * @param req 要求事情
     * @return boolean
     */
    boolean unAssignRole(AssignRoleDTO req);

    /**
     * 分配权限
     *
     * @param dto dto
     * @return boolean
     */
    boolean assignPermission(AssignPermissionDTO dto);

    /**
     * 取消分配权限
     *
     * @param dto dto
     * @return boolean
     */
    boolean unAssignPermission(AssignPermissionDTO dto);

}
